package com.chixing.day09_innerclass;

public class StringDemo {
    public static void main(String[] args) {
        String s1="hello";
        s1="good";
        System.out.println(s1);

        String s2=new String("code");  //堆 先new 开辟一块内存 “code”
        String s3="code";  //字符串常量池  在字符串常量池里放入一个 "code"  s3 指向它
        System.out.println("s2==s3? : " + (s2==s3)); //false

        String s4="file";  //s4在 字符串常量池中  放入了一个“file”
        String s5="file"; //s5  在字符串常量池里  找到了  直接指向
        System.out.println("s4==s5" + (s4==s5));//true   内存地址一样

        String s6=new String("help");
        String s7=new String("help");
        System.out.println("s6==s7" + (s6==s7));//false  都重新new了
        String s8="help"; //直接去找


        /*
        * String s1="a";
        * String s2="b";
        * s1+s2=new String("ab") 堆
        * s1.concat(s2)=new String("ab") 堆
        * "a" + "b" ===> 在常量池中放一份 “ab"
        * */
        //字符串的拼接 等价于  new String
        String str1="hello";
        String str2="world";
        String str3=str1+str2;//两个对象进行拼接
        String str4="helloworld";
        System.out.println(str3==str4); //false

        String str5=str1.concat(str2);
        System.out.println(str5==str4);//false

        String str6="hello"+"world"; //直接在常量池里拼接  “helloworld” 到常量池中匹配
        System.out.println(str6==str4); //true



    }
}
